﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Entidades;
using System.Data;
using CamadaAcessoBDPostgresql;

namespace CamadaAcessoDadosPostgresql
{
    public class MenuSistemaWork
    {
        public List<MenuSistema> ListaMenu()
        {
            StringBuilder comando = new StringBuilder();
            comando.Append(" SELECT * ");
            comando.Append(" FROM menu ");
            comando.Append(" ORDER BY menu.padrao, menu.idmenupai, menu.ordem ");

           /* comando.Append(" WHERE");
            if (pusuario.Idusuario > 0)
                comando.Append(" usuario.idusuario =" + pusuario.Idusuario);
          */
            List<MenuSistema> menus = new List<MenuSistema>();
         


            DataTable dt = new DataTable();
            dt = new TaskConnection().RunCommand(comando.ToString(), true);
            DataTableReader dtr = dt.CreateDataReader();
            if (dtr.HasRows)
            {
                while (dtr.Read())
                {
                  
                    menus.Add(new MenuSistema( (int)dtr["idmenu"],
                                        (int)dtr["idmenupai"],
                                        (int)dtr["ordem"],
                                        (int)dtr["padrao"],
                                        dtr["descricao"].ToString())
                              );

                }
            }

            return menus;
        }

        public List<MenuSistema> ListaMenu(string pModulo)
        {
            StringBuilder comando = new StringBuilder();
            comando.Append(" SELECT * ");
            comando.Append(" FROM menu ");
            comando.Append(" WHERE UPPER(menu.modulo) =  UPPER('" + pModulo + "')" );
            comando.Append(" OR menu.modulo IS NULL"); 
            comando.Append(" ORDER BY menu.padrao, menu.idmenupai, menu.ordem ");

            /* comando.Append(" WHERE");
             if (pusuario.Idusuario > 0)
                 comando.Append(" usuario.idusuario =" + pusuario.Idusuario);
           */
            List<MenuSistema> menus = new List<MenuSistema>();



            DataTable dt = new DataTable();
            dt = new TaskConnection().RunCommand(comando.ToString(), true);
            DataTableReader dtr = dt.CreateDataReader();
            if (dtr.HasRows)
            {
                while (dtr.Read())
                {

                    menus.Add(new MenuSistema((int)dtr["idmenu"],
                                        (int)dtr["idmenupai"],
                                        (int)dtr["ordem"],
                                        (int)dtr["padrao"],
                                        dtr["descricao"].ToString())
                              );

                }
            }

            return menus;
        }

        public MenuSistema RetornaMenu(int idmenu)
        {

            Object menusistema = new Object();

            StringBuilder comando = new StringBuilder();
            comando.Append(" SELECT * ");
            comando.Append(" FROM menu ");
            comando.Append(" WHERE menu.idmenu = " + idmenu);
            

            DataTable dt = new DataTable();
            dt = new TaskConnection().RunCommand(comando.ToString(), true);
            DataTableReader dtr = dt.CreateDataReader();
            if (dtr.HasRows)
            {
                while (dtr.Read())
                {

                    menusistema = new MenuSistema((int)dtr["idmenu"],
                                            (int)dtr["idmenupai"],
                                            (int)dtr["ordem"],
                                            (int)dtr["padrao"],
                                            dtr["descricao"].ToString(),
                                            dtr["objeto"].ToString());
                              

                }
            }

            return (MenuSistema) menusistema;
        
        }

        public void AtualizaMenu(MenuSistema pMenuSistema)
        {
            StringBuilder comando = new StringBuilder();

            if (pMenuSistema.Idmenu == 0)
            {

                comando.Append(" INSERT INTO menu( ");
                comando.Append(" idmenupai,");
                comando.Append(" ordem, ");
                comando.Append(" padrao,");
                comando.Append(" descricao,");
                comando.Append(" objeto, ");
                comando.Append(" projeto, ");
                comando.Append(" exclusivo,");
                comando.Append(" dtinc)");
                comando.Append(" VALUES ( ");
                comando.Append(pMenuSistema.Idmenupai + ",");
                comando.Append(pMenuSistema.Ordem + ",");
                comando.Append(pMenuSistema.Padrao + ",");
                comando.Append("'" + pMenuSistema.Descricao + "',");
                comando.Append("'" + pMenuSistema.Objeto + "',");
                comando.Append("'" + pMenuSistema.Projeto + "',");
                comando.Append(pMenuSistema.Exclusivo + ",");
                comando.Append("CURRENT_TIMESTAMP)");
            }

            new TaskConnection().RunCommand(comando.ToString(),false);
        }
    }
}
